const app = getApp();
Component({
  /**
   * 组件的一些选项
   */
  options: {
    addGlobalClass: true,
    multipleSlots: true,
    is_bdsjh: 0,
    token:""
  },
  /**
   * 组件的对外属性
   */
  properties: {
    modalName: {
      type: String,
      value: ''
    },
  },
  lifetimes: {
    attached: function () {
      if (wx.getUserProfile) {
        this.setData({
          canIUseGetUserProfile: true
        })
      }
    },
    detached: function () {
      // 在组件实例被从页面节点树移除时执行
    },
  },
  /**
   * 组件的初始数据
   */
  data: {
    canIUseGetUserProfile: false,
    userinfo: {},
    is_bdsjh: 0,
    wxuserinfo: {},
    session_key:""
  },
  /**
   * 组件的方法列表
   */
  methods: {

    // 去登录
    toLogin() {
      // this.selectComponent("#to-login").toLogin() // 改方法只能在自己不被隐藏状态下进行调用
      this.showModal('bottomModal')
      this.triggerEvent('logins', true)
    },
    showModal(e) {
      this.setData({
        modalName: e
      })
    },
    hideModal(e) {
      this.setData({
        modalName: null
      })
    },
    /**
   * 微信授权登录
   */
    getUserProfile(e) {
      this.triggerEvent('logins', false)
      this.hideModal()  // 关闭授权弹窗
      var that = this
      wx.getUserProfile({
        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
        success: (res) => {
          console.log(res)
          this.data.userinfo = res.userInfo
          let data = res.userInfo
          // {
          //   encryptedData: res.encryptedData,
          //   iv: res.iv
          // }
          wx.login({
            success: res => {
             console.log(res)
              let code = res.code //这里获取的就是登陆的code，可以传送给后端来换取openid和unionid
              data.code = code
              that.saveUserInfo(data);
            }
          })

        }, fail: (res) => {
          //用户按了拒绝按钮
          wx.showModal({
            title: '警告',
            content: '您点击了拒绝授权，将无法正常使用,请授权之后再进入!!!',
            showCancel: false,
            confirmText: '返回授权',
            success: function (res) {
              if (res.confirm) {
                console.log('用户点击了“返回授权”')
                that.triggerEvent('logins', true)
              }
            }
          })
        }
      })
    },
    // 2021年4月13日后发布的小程序新版本无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息（头像、昵称、性别与地区），将直接获取匿名数据（包括userInfo与     encryptedData中的用户个人信息），获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响，但如果要进行版本更新则需要进行适配
    bindGetUserInfo: function (e) {
      this.triggerEvent('logins', false)
      this.hideModal()  // 关闭授权弹窗
      if (e.detail.userInfo) {
        //用户按了允许授权按钮
        var that = this;
        wx.login({
          success: function (loginRes) {
            wx.getSetting({
              success: function (res) {
                wx.getUserInfo({
                  success: function (userinfoRes) {
                    var data = {
                      code: loginRes.code,
                      encryptedData: userinfoRes.encryptedData,
                      iv: userinfoRes.iv,
                    }
                    that.data.userinfo = userinfoRes.userInfo || {}
                    that.saveUserInfo(data);
                  },
                  fail: function (res) { }
                });

              }
            })
          }
        })
      } else {
        //用户按了拒绝按钮
        wx.showModal({
          title: '警告',
          content: '您点击了拒绝授权，将无法正常使用,请授权之后再进入!!!',
          showCancel: false,
          confirmText: '返回授权',
          success: function (res) {
            if (res.confirm) {
              console.log('用户点击了“返回授权”')
              that.triggerEvent('logins', true)
            }
          }
        })
      }
    },
    //插入登录的用户的相关信息到数据库
    saveUserInfo: function (data) {
      wx.showLoading({
        title: '正在登录中',
      })
      var that = this;
      // 参数
      let params = {
        userInfo: data
        // encrypteData: data.encryptedData,
        // iv: data.iv,
      }
      app.post("/user/index",params).then(res => {
        console.log(res)
        const { code, data, msg } = res
        if (code == 1) {
          app.showToast("授权成功!")  // 提示
          let token = that.data.token = data.token
          that.data.session_key = data.session_key
          if (data.is_mobile == true) {
            app.updateCache('token', token)  // 存储token
            this.triggerEvent('logins', true)
          } else {
            that.setData({
              is_bdsjh: 1,
              modalName: "bottomModal"
            })
          }
        } else {
          app.showToast(msg)  // 提示
          this.triggerEvent('logins', true)
        }
      }).catch((err) => {
        this.triggerEvent('logins', true)
        wx.hideLoading({})
      })
    },
    // 返会上一页
    back() {
      wx.navigateBack({
        delta: 1
      })
    },
    // 获取手机号相关信息
    getPhoneNumber: function (e) {
      var that = this;
      that.hideModal()  // 关闭授权弹窗
      if (e.detail.errMsg == "getPhoneNumber:ok") {
        wx.login({
          success: function (loginRes) {
            let params = {
              // session_key:that.data.session_key,
              encryptedData: e.detail.encryptedData,
              iv: e.detail.iv,
              code: loginRes.code,
              token:that.data.token
            }
            app.post('/user/bind_phone', params).then((res) => {
              const { code, data, msg } = res
              if (code == 1) {
                app.showToast(msg)
                app.updateCache('token', params.token)  // 存储token
                that.triggerEvent('logins', true)
              } else {
                that.triggerEvent('logins', true)
                app.showToast(msg)
              }
            }).catch((err) => {
              that.triggerEvent('logins', true)
              console.log(err)
            })
          }, fail: function (err) {
            console.log(err)
            that.triggerEvent('logins', true)
          }
        })
        // that.wxUpdateMobile(data) // 获取手机号
      } else {
        //用户按了拒绝按钮
        that.triggerEvent('logins', true)
        wx.showModal({
          title: '警告',
          content: '您点击了拒绝授权，需要手动绑定!!!',
          showCancel: false,
          confirmText: '返回授权',
          success: function (res) {
            if (res.confirm) {
              console.log('用户点击了“返回授权”')
              that.triggerEvent('logins', true)
            }
          }
        })
      }
    },
  },

})